Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

384
Views
SyntaxError: palabra reservada inesperada "esperar", node.js es la versión correcta

Estoy tratando de ejecutar una función de forma asíncrona 20 veces. Tengo la definición de la función:

 import axios from 'axios'; async function updateUser (url, user) { return new Promise((resolve, reject) => { axios.put(url, JSON.stringify(user)) .then(response => { //Folio returned code 204 console.log('The user has been updated'); resolve(response.data); }).catch((err) => { //Folio returned error console.error(`Error Text: ${err.response.data}`); console.error(`Error Code: ${err}`); }); }); }; export {updateUser};

Luego, intento recorrer a los usuarios en un JSON externo y actualizarlos en mi sistema 20 a la vez:

 import {updateUser} from './updateUser.js'; import usersjson from './jsons/users.json'; let promises=[]; if (usersjson.users.length) { try { for (const user of usersjson.users) { update = new promise ((resolve,reject) => { updateUser(url, user) .then((list) => {resolve(list)}) .catch((error)=>{reject(error)}) }); promises.push(update); if (promises.length = 20) { await Promise.all(promises) .then((responses)=> { console.log(responses); promises=[]; }).catch((err)=> { console.log(err); }); } } } catch(err)=> { console.log(err); } }

Sin embargo, recibo un mensaje de error en la consola:

 await Promise.all(promises) ^^^^^ SyntaxError: Unexpected reserved word

La versión de mi nodo es 12.19.0 (según las preguntas anteriores, parece que tiene que ser al menos 10, por lo que ese no debería ser el problema).

Cuando ejecuto la función sin esperar, funcionan correctamente (es decir, los usuarios se actualizan en mi sistema). También parece que el ciclo for es asíncrono por sí mismo, pero me temo que si hay demasiadas llamadas simultáneamente, mi sistema bloqueará la API, así que quiero hacer de 20 a 50 llamadas a la vez, como máximo.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Para usar await , debe declarar la función en la que está poniendo await como asíncrono

Por ejemplo:

 const functionReturningPromise = (input) => { return new Promise((resolve, reject) => { if (!input) { return reject(); } return resolve(); }); } const functionAwaitingPromise = async () => { for (let i = 0; i < 20; i +=1) { try { await functionReturningPromise(i); console.log(i); } catch (error) { console.log(error); } } }

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!